セキュリティ攻撃 SQLインジェクション
SQLインジェクションとは
SQLを利用するデータベースに不正なコマンドを注入して、データ改ざんや情報漏洩を狙う攻撃
攻撃が発生する状況
アプリケーション内で、ユーザーの入力値がSQL文に利用される所で発生し得る
https://www.kagoya.jp/howto/wp-content/uploads/kagoya201907-2.gif
攻撃から身を守るために意識すべき事
ユーザーから入力を用いてDB操作する箇所では、最新の注意が必要
エスケープ処理やフレームワークのインジェクション対策コードを利用せよ
お金に余裕があるなら、多層防御としてWAFの利用して怪しいリクエストを弾くようにする お金に余裕があるなら、ペネトレなどを行って脆弱性を洗い出す
超具体的な攻撃例
1文字ずつ情報を抜き取っていく方法
指定した1文字がインジェクションで取得した結果の指定インデックスの文字と合ってるなら、3秒だけSLEEPする
みたいなSQL文を書くと、時間はかかるけどDBの中身を抜き出せる
onigiri.w2.iconだったらどう攻撃する?
1. まずユーザー用の入力フォームページを見つける
2. そこでSQL構文を打ち込んでみる(SLEEP関数を入れて、レスポンスまでの時間を見る)
3. SQLインジェクションの脆弱性があると判断したら、SQLインジェクションを使ってDBのスキーマを調査する
4. 情報を抜き出す方法を編み出す(ちまちま抜き出すのか、一気にガツっと抜き出すのか)
ここは対象のWebシステムの作り方によって変わると思う。結構ガチガチな構成なら、回り道したやり方になりそう
「1 - 3」は自動化すると思う。
無差別にいろんなWebシステムを当たって、脆弱性がシステムだけpickするスクリプトを作るかと。
参考